#ifndef MODEL_UTILS_H_
#define MODEL_UTILS_H_

#include "datatypes.h"

// returns the atomic concept with the given name if it exists
// NULL if it does not exist
Concept* get_atomic_concept(unsigned char* name, TBox* tbox);

// inserts the atomic concept with the given name to the hash
void put_atomic_concept(unsigned char* name, Concept* c, TBox* tbox);

// return the atomic role with the given name if it exists
// NULL if it does not exist
Role* get_atomic_role(unsigned char* name, TBox* tbox);

// insert the atomic role with the given name to the hash
void put_atomic_role(unsigned char* name, Role* c, TBox* tbox);

// get the existential restriction with role r and filler f from hash
Concept* get_exists_restriction(int r, int f, TBox* tbox);

// put the existential restriction with role r and filler f into hash
void put_exists_restriction(int r, int f, Concept* c, TBox* tbox);

// get the conjunction with the given conjuncts
Concept* get_conjunction(int size, Concept** conjuncts, TBox* tbox);

// put the conjunction with the given conjunctions into the conjunctions hash
void put_conjunction(int size, Concept* c, TBox* tbox);

#endif
